﻿// See https://aka.ms/new-console-template for more information
using System.Text; // 必须引入的命名空间 
Console.WriteLine("Hello, World!");
int i1=1;
i1+=i1;
Console.WriteLine(i1);

#region 运算符
//加减乘除
//++--
//先加在读,先读在减法
Console.WriteLine(i1++);
Console.WriteLine(i1);
Console.WriteLine(++i1);
Console.WriteLine((285*2+720*3)*0.38);
#endregion


#region 字符串拼接:+/fromat/$/String.Concat和String.Join StringBuffer
/*最佳实践
少量拼接：优先使用+或$插值，代码简洁。
循环或大量拼接：必须使用StringBuilder，避免内存浪费。
格式化需求：选择$插值替代string.Format，提升可读性。
数组连接：使用String.Join简化代码并提高效率**/

//+
String str1 = "abc";
String str2 = "def";
Console.WriteLine(str1+str2);
//format
String str = string.Format("name:{0},age:{1}",str1,str2);
Console.WriteLine(str);


//$ (C#6.0引入，简化string.Format，直接内嵌变量，提升可读性)
string name = "zyf";
str = $"name:{name},age:{30}";
Console.WriteLine(str);


//(高效连接方式)String.Concat 和 String.Join
/*代码 String.Join("-", ":", true) 的含义是：
分隔符："-"
元素列表：":" 和 true
实际输出应为 ":-True"。*/
str = String.Concat("A", 123,456); // 输出 A123456
Console.Write(str);
str = String.Join(": ","",true); // 输出 "A123True"
Console.WriteLine(str);
str = String.Concat("B", 123,456); // 输出 "A123True"
Console.WriteLine(str);


//StringBuilder,循环内拼接：无论次数多少，优先用 StringBuilder。

StringBuilder sb = new StringBuilder(); // 初始化在循环外 
// 若已知长度：new StringBuilder(4096); // 预分配容量 
 
for (int i = 1; i <= 10; i++) 
{
    sb.Append(i);       // 追加数字 
    if (i != 10) 
    {
        sb.Append(", "+'\n'); // 追加分隔符（避免末尾多余逗号）
    }
}
string result = sb.ToString(); // 最终转换为字符串 
Console.WriteLine(result);     // 输出：1, 2, 3, ..., 1000 
#endregion 